{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "e873bdaa",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-13T11:46:07.098174500Z",
     "start_time": "2023-10-13T11:46:07.051261400Z"
    },
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import spacy\n",
    "import re\n",
    "import openpyxl\n",
    "from warnings import filterwarnings\n",
    "from collections import Counter\n",
    "from pandas import DataFrame\n",
    "\n",
    "filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "f217ca20f3b1dd44",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-13T11:46:07.107678500Z",
     "start_time": "2023-10-13T11:46:07.066843100Z"
    },
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "class EnDataPreprocessing:\n",
    "    \"\"\"\n",
    "    一个英文数据预处理的 工具类\n",
    "    \"\"\"\n",
    "\n",
    "    def __init__(self, data_frame):\n",
    "        \"\"\"\n",
    "        初始化 工具类\n",
    "        :param data_frame: 传入Dataframe对象\n",
    "        \"\"\"\n",
    "        df.dropna(inplace=True)\n",
    "        self.df = data_frame\n",
    "        self.nlp = spacy.load(\"en_core_web_sm\")\n",
    "\n",
    "    def convert_fullwidth_to_halfWidth(self, text):\n",
    "        '''\n",
    "        全角字符统一为半全角字符\n",
    "        '''\n",
    "        halfwidth_chars = \"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!\\\"#$%&'()*+,-./:;<=>?@[\\\\]^_`{|}~\"\n",
    "\n",
    "        # 对应的全角字符Unicode范围\n",
    "        fullwidth_chars = \"１２３４５６７８９０ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ！“＃＄％＆'（）＊＋，－．／：；＜＝＞？＠［＼］＾＿｀｛｜｝～\"\n",
    "\n",
    "        char_mapping = dict()\n",
    "        for i in range(len(halfwidth_chars)):\n",
    "            char_mapping[ord(fullwidth_chars[i])] = halfwidth_chars[i]\n",
    "        return text.translate(char_mapping)\n",
    "\n",
    "    def chinese_punctuation_to_english(self, text):\n",
    "        '''\n",
    "        中文标点符号统一为英文\n",
    "        '''\n",
    "        punctuation_mapping = {'，': ',', '。': '.', '？': '?', '！': '!', '；': ';', '：': ':', '“': '\"', '”': '\"', '‘': \"'\",\n",
    "                               '’': \"'\", '&#8203;``oaicite:{\"number\":1,\"invalid_reason\":\"Malformed citation 【': '[',\n",
    "                               '】\"}``&#8203;': ']', '（': '(', '）': ')', '《': '<', '》': '>', '、': ',', '……': '...',\n",
    "                               '·': '.',\n",
    "                               '——': '-'}\n",
    "        # 使用正则表达式替换中文标点符号\n",
    "        for ch, en in punctuation_mapping.items():\n",
    "            text = re.sub(re.escape(ch), en, text)\n",
    "        return text\n",
    "\n",
    "    def Word_Form_Reduction(self, text):\n",
    "        \"\"\"\n",
    "        词形还原\n",
    "        :param text: 文本\n",
    "        :return: \n",
    "        \"\"\"\n",
    "        doc = self.nlp(text)\n",
    "\n",
    "        # 词形还原\n",
    "        text_list = [token.lemma_ for token in doc]\n",
    "        return \" \".join(text_list)\n",
    "\n",
    "    def Abbreviation_replacement(self, text):\n",
    "        # 缩写和它们的扩展 字典\n",
    "        abbreviations = {\"can't\": 'cannot', \"it's\": 'it is', \"I'm\": 'I am', 'gonna': 'going to', 'wanna': 'want to',\n",
    "                         \"shouldn't\": 'should not', \"didn't\": 'did not', \"couldn't\": 'could not', \"doesn't\": 'does not',\n",
    "                         \"won't\": 'will not', \"i'll\": 'I will', \"you'll\": 'you will', \"he'll\": 'he will',\n",
    "                         \"she'll\": 'she will', \"we'll\": 'we will', \"they'll\": 'they will', \"I've\": 'I have',\n",
    "                         \"you've\": 'you have', \"we've\": 'we have', \"they've\": 'they have', \"I'd\": 'I would',\n",
    "                         \"you'd\": 'you would', \"he'd\": 'he would', \"she'd\": 'she would', \"we'd\": 'we would',\n",
    "                         \"they'd\": 'they would', \"haven't\": 'have not', \"hasn't\": 'has not', \"wouldn't\": 'would not',\n",
    "                         \"should've\": 'should have', \"could've\": 'could have', \"might've\": 'might have',\n",
    "                         \"must've\": 'must have', \"Can't\": 'Cannot', \"It's\": 'It is', 'Gonna': 'Going to',\n",
    "                         'Wanna': 'Want to', \"Shouldn't\": 'Should not', \"Didn't\": 'Did not', \"Couldn't\": 'Could not',\n",
    "                         \"Doesn't\": 'Does not', \"Won't\": 'Will not', \"I'll\": 'I will', \"You'll\": 'You will',\n",
    "                         \"He'll\": 'He will', \"She'll\": 'She will', \"We'll\": 'We will', \"They'll\": 'They will',\n",
    "                         \"You've\": 'You have', \"We've\": 'We have', \"They've\": 'They have', \"You'd\": 'You would',\n",
    "                         \"He'd\": 'He would', \"She'd\": 'She would', \"We'd\": 'We would', \"They'd\": 'They would',\n",
    "                         \"Haven't\": 'Have not', \"Hasn't\": 'Has not', \"Wouldn't\": 'Would not',\n",
    "                         \"Should've\": 'Should have',\n",
    "                         \"Could've\": 'Could have', \"Might've\": 'Might have', \"Must've\": 'Must have'}\n",
    "\n",
    "        # 替换缩写\n",
    "        for abbreviation, expansion in abbreviations.items():\n",
    "            # 使用正则表达式确保只替换完整的单词，而不是部分匹配\n",
    "            text = re.sub(r'\\b' + re.escape(abbreviation) + r'\\b', expansion, text)\n",
    "        return text\n",
    "\n",
    "    def replace_special_char(self, cleaned_text):\n",
    "        \"\"\"\n",
    "        去除特殊字符\n",
    "        :param cleaned_text: \n",
    "        :return: \n",
    "        \"\"\"\n",
    "        doc = self.nlp(cleaned_text)\n",
    "        # 词干化\n",
    "        cleaned_text = \" \".join([token.text for token in doc])\n",
    "\n",
    "        # 匹配各种英文序号的正则表达式\n",
    "        pattern = r'\\b(?:[A-Z]?[a-z]*\\)?|i{1,3}|IV|V?I{1,3})\\.\\s*'\n",
    "        # 使用正则表达式替换为空字符串\n",
    "        cleaned_text = re.sub(pattern, '', cleaned_text)\n",
    "\n",
    "        # 去除URLs\n",
    "        cleaned_text = re.sub(r'http\\S+|www\\S+|https\\S+', '', cleaned_text)\n",
    "\n",
    "        # 去除HTML标记\n",
    "        pattern = re.compile('<.*?>')\n",
    "        cleaned_text = re.sub(pattern, '', cleaned_text)\n",
    "\n",
    "        # 使用 spacy 去停顿词\n",
    "        doc = self.nlp(cleaned_text)\n",
    "        cleaned_text = [token.text for token in doc if not token.is_stop]\n",
    "\n",
    "        # 使用自己的停顿词list 去除停用词\n",
    "        cleaned_text = \" \".join([word for word in cleaned_text if word not in stopList and len(word) > 3])\n",
    "\n",
    "        # 去除特殊字符\n",
    "        special_char_pattern = re.compile('[^a-zA-Z0-9\\s]')\n",
    "        cleaned_text = re.sub(special_char_pattern, '', cleaned_text)\n",
    "\n",
    "        # 去掉多余的空格\n",
    "        cleaned_text = \" \".join([char.replace(\"\\\\n\", '').strip() for char in cleaned_text.split()])\n",
    "        # 去除非ASCII字符\n",
    "        cleaned_text = ''.join([char for char in cleaned_text if ord(char) < 128])\n",
    "\n",
    "        return cleaned_text\n",
    "\n",
    "    def run(self, text):\n",
    "        \"\"\"\n",
    "        文本清洗\n",
    "        :param text: \n",
    "        \"\"\"\n",
    "        # 中英文 标点符号统一  中文符号转换为英文\n",
    "        text = self.chinese_punctuation_to_english(text)\n",
    "\n",
    "        # 全角字符统一为半全角字符\n",
    "        text = self.convert_fullwidth_to_halfWidth(text.strip())\n",
    "        # 替换缩写\n",
    "        text = self.Abbreviation_replacement(text)\n",
    "\n",
    "        # 去除特殊字符\n",
    "        text = self.replace_special_char(text)\n",
    "        # 词性还原\n",
    "        text = self.Word_Form_Reduction(text)\n",
    "        return text\n",
    "\n",
    "    def data_preprocessing(self, row):\n",
    "        \"\"\"\n",
    "        清洗文本的工具函数\n",
    "        :param row: self.df 的每一行 \n",
    "        :return: 返回处理后的 self.df每一行 \n",
    "        \"\"\"\n",
    "        row['任职要求'] = self.run(row['任职要求'])\n",
    "        row['职位'] = self.run(row['职位'])\n",
    "        return row\n",
    "\n",
    "    def main_(self) -> DataFrame:\n",
    "        \"\"\"\n",
    "        执行函数\n",
    "        :return: 文本清洗后的 df \n",
    "        \"\"\"\n",
    "        self.df.apply(func=self.data_preprocessing, axis=1)\n",
    "        return self.df\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "d60c0177",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-13T11:47:35.552503800Z",
     "start_time": "2023-10-13T11:46:07.097174700Z"
    },
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "当前网站: CareerBuilder\n"
     ]
    }
   ],
   "source": [
    "workbook = openpyxl.load_workbook('../Data/数据汇总.xlsx')\n",
    "# lac = hub.Module(directory='D:\\paddlenlp_home\\paddle_hub\\modules\\lac')\n",
    "stopList = open(\"../Data/stop_words.txt\", 'r', encoding='utf-8').read().split('\\n')\n",
    "stopList.extend([\"*\", ])\n",
    "\n",
    "for sheet_name in workbook.sheetnames:\n",
    "    print(f\"当前网站: {sheet_name}\")\n",
    "    df = pd.read_excel('../Data/数据汇总.xlsx', sheet_name=sheet_name, index_col=0)\n",
    "    if re.search('[\\u4e00-\\u9fa5]', sheet_name):  # 中文网站\n",
    "        # ZhWordMark(lac,sheet_name,df,stopList).run()\n",
    "        # print(\"*-\" * 80)\n",
    "        pass\n",
    "    else:  # 英文网站\n",
    "        df = EnDataPreprocessing(df).main_()\n",
    "        break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "b5b0baaca32b7171",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-13T11:47:35.652386600Z",
     "start_time": "2023-10-13T11:47:35.553502300Z"
    },
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('experience', 1870),\n",
       " ('work', 1755),\n",
       " ('business', 1716),\n",
       " ('datum', 1576),\n",
       " ('team', 1357),\n",
       " ('include', 1150),\n",
       " ('year', 940),\n",
       " ('support', 851),\n",
       " ('process', 797),\n",
       " ('skill', 754),\n",
       " ('analysis', 723),\n",
       " ('provide', 718),\n",
       " ('system', 687),\n",
       " ('development', 643),\n",
       " ('report', 638),\n",
       " ('management', 638),\n",
       " ('Business', 636),\n",
       " ('require', 613),\n",
       " ('ability', 611),\n",
       " ('information', 604),\n",
       " ('solution', 601),\n",
       " ('develop', 596),\n",
       " ('employee', 595),\n",
       " ('financial', 582),\n",
       " ('Data', 575),\n",
       " ('project', 567),\n",
       " ('position', 558),\n",
       " ('product', 551),\n",
       " ('opportunity', 548),\n",
       " ('role', 540),\n",
       " ('data', 537),\n",
       " ('customer', 531),\n",
       " ('Intelligence', 528),\n",
       " ('service', 512),\n",
       " ('base', 500),\n",
       " ('Analyst', 478),\n",
       " ('company', 470),\n",
       " ('drive', 466),\n",
       " ('relate', 461),\n",
       " ('client', 461),\n",
       " ('design', 460),\n",
       " ('status', 456),\n",
       " ('benefit', 455),\n",
       " ('build', 450),\n",
       " ('technology', 446),\n",
       " ('requirement', 443),\n",
       " ('tool', 436),\n",
       " ('application', 431),\n",
       " ('ensure', 430),\n",
       " ('intelligence', 427),\n",
       " ('model', 421),\n",
       " ('apply', 414),\n",
       " ('knowledge', 401),\n",
       " ('range', 399),\n",
       " ('create', 398),\n",
       " ('performance', 389),\n",
       " ('environment', 387),\n",
       " ('Skills', 387),\n",
       " ('employment', 386),\n",
       " ('strong', 383),\n",
       " ('time', 365),\n",
       " ('analytic', 362),\n",
       " ('andor', 361),\n",
       " ('technical', 356),\n",
       " ('program', 353),\n",
       " ('plan', 344),\n",
       " ('decision', 339),\n",
       " ('high', 337),\n",
       " ('level', 337),\n",
       " ('risk', 336),\n",
       " ('identify', 331),\n",
       " ('health', 329),\n",
       " ('manage', 329),\n",
       " ('disability', 325),\n",
       " ('member', 317),\n",
       " ('Management', 316),\n",
       " ('understand', 314),\n",
       " ('analytical', 314),\n",
       " ('maintain', 314),\n",
       " ('organization', 311),\n",
       " ('security', 310),\n",
       " ('complex', 306),\n",
       " ('lead', 306),\n",
       " ('perform', 303),\n",
       " ('applicant', 303),\n",
       " ('offer', 302),\n",
       " ('communication', 300),\n",
       " ('gender', 294),\n",
       " ('partner', 290),\n",
       " ('analyst', 285),\n",
       " ('internal', 284),\n",
       " ('degree', 283),\n",
       " ('strategy', 278),\n",
       " ('candidate', 277),\n",
       " ('people', 272),\n",
       " ('software', 271),\n",
       " ('protect', 265),\n",
       " ('individual', 264),\n",
       " ('market', 260),\n",
       " ('responsible', 260),\n",
       " ('stakeholder', 258),\n",
       " ('insight', 254),\n",
       " ('policy', 253),\n",
       " ('research', 252),\n",
       " ('industry', 251),\n",
       " ('problem', 248),\n",
       " ('operation', 247),\n",
       " ('relevant', 247),\n",
       " ('issue', 243),\n",
       " ('compensation', 242),\n",
       " ('learn', 239),\n",
       " ('Experience', 235),\n",
       " ('write', 235),\n",
       " ('function', 234),\n",
       " ('national', 233),\n",
       " ('improve', 232),\n",
       " ('deliver', 230),\n",
       " ('Recommended', 229),\n",
       " ('location', 228),\n",
       " ('platform', 224),\n",
       " ('analyze', 224),\n",
       " ('practice', 224),\n",
       " ('race', 219),\n",
       " ('strategic', 219),\n",
       " ('make', 218),\n",
       " ('salary', 217),\n",
       " ('Click', 216),\n",
       " ('mission', 214),\n",
       " ('professional', 214),\n",
       " ('functional', 214),\n",
       " ('activity', 213),\n",
       " ('leadership', 213),\n",
       " ('Analysis', 212),\n",
       " ('user', 211),\n",
       " ('care', 208),\n",
       " ('result', 208),\n",
       " ('education', 207),\n",
       " ('receive', 204),\n",
       " ('highly', 204),\n",
       " ('life', 203),\n",
       " ('pay', 203),\n",
       " ('world', 202),\n",
       " ('quality', 202),\n",
       " ('Financial', 202),\n",
       " ('Microsoft', 200),\n",
       " ('implement', 198),\n",
       " ('diverse', 198),\n",
       " ('orientation', 198),\n",
       " ('serve', 197),\n",
       " ('focus', 197),\n",
       " ('sale', 197),\n",
       " ('field', 197),\n",
       " ('sexual', 196),\n",
       " ('demonstrate', 195),\n",
       " ('color', 193),\n",
       " ('database', 193),\n",
       " ('solve', 192),\n",
       " ('religion', 191),\n",
       " ('culture', 189),\n",
       " ('future', 189),\n",
       " ('change', 189),\n",
       " ('meet', 188),\n",
       " ('veteran', 188),\n",
       " ('training', 187),\n",
       " ('review', 187),\n",
       " ('impact', 186),\n",
       " ('origin', 186),\n",
       " ('multiple', 185),\n",
       " ('reporting', 184),\n",
       " ('equity', 183),\n",
       " ('initiative', 182),\n",
       " ('hire', 182),\n",
       " ('career', 181),\n",
       " ('area', 181),\n",
       " ('address', 180),\n",
       " ('Information', 179),\n",
       " ('community', 178),\n",
       " ('goal', 177),\n",
       " ('leader', 175),\n",
       " ('test', 174),\n",
       " ('relationship', 174),\n",
       " ('procedure', 174),\n",
       " ('standard', 173),\n",
       " ('planning', 173),\n",
       " ('Finance', 172),\n",
       " ('communicate', 168),\n",
       " ('global', 167),\n",
       " ('Francisco', 167),\n",
       " ('identity', 166),\n",
       " ('resource', 165),\n",
       " ('improvement', 165),\n",
       " ('operational', 164),\n",
       " ('advanced', 163),\n",
       " ('source', 162),\n",
       " ('responsibility', 162),\n",
       " ('City', 162),\n",
       " ('state', 161),\n",
       " ('commit', 160),\n",
       " ('enable', 159),\n",
       " ('effective', 159),\n",
       " ('challenge', 158),\n",
       " ('California', 158),\n",
       " ('grow', 157),\n",
       " ('medical', 157),\n",
       " ('trend', 157),\n",
       " ('implementation', 157),\n",
       " ('prefer', 157),\n",
       " ('assist', 155),\n",
       " ('large', 155),\n",
       " ('growth', 154),\n",
       " ('eligible', 154),\n",
       " ('organizational', 153),\n",
       " ('equivalent', 151),\n",
       " ('accommodation', 151),\n",
       " ('Qualifications', 150),\n",
       " ('term', 150),\n",
       " ('senior', 150),\n",
       " ('Group', 149),\n",
       " ('package', 149),\n",
       " ('Opportunity', 149),\n",
       " ('employer', 149),\n",
       " ('cross', 149),\n",
       " ('exist', 148),\n",
       " ('duty', 148),\n",
       " ('Bachelor', 147),\n",
       " ('account', 147),\n",
       " ('need', 146),\n",
       " ('effectively', 146),\n",
       " ('request', 146),\n",
       " ('diversity', 145),\n",
       " ('recommend', 145),\n",
       " ('vision', 144),\n",
       " ('equal', 144),\n",
       " ('Excel', 144),\n",
       " ('capability', 144),\n",
       " ('compliance', 144),\n",
       " ('critical', 142),\n",
       " ('competitive', 142),\n",
       " ('Operations', 142),\n",
       " ('staff', 142),\n",
       " ('office', 141),\n",
       " ('external', 140),\n",
       " ('Equal', 137),\n",
       " ('qualified', 137),\n",
       " ('Knowledge', 137),\n",
       " ('dashboard', 136),\n",
       " ('federal', 136),\n",
       " ('control', 136),\n",
       " ('remove', 136),\n",
       " ('conduct', 136),\n",
       " ('define', 135),\n",
       " ('minimum', 135),\n",
       " ('detail', 134),\n",
       " ('inclusive', 133),\n",
       " ('subject', 132),\n",
       " ('department', 132),\n",
       " ('qualification', 132),\n",
       " ('live', 131),\n",
       " ('join', 131),\n",
       " ('Manager', 131),\n",
       " ('Services', 130),\n",
       " ('marketing', 130),\n",
       " ('metric', 130),\n",
       " ('specific', 129),\n",
       " ('Engineering', 129),\n",
       " ('excellent', 129),\n",
       " ('science', 129),\n",
       " ('Senior', 128),\n",
       " ('Security', 128),\n",
       " ('successful', 128),\n",
       " ('regard', 127),\n",
       " ('condition', 127),\n",
       " ('Support', 126),\n",
       " ('applicable', 126),\n",
       " ('assign', 126),\n",
       " ('computer', 126),\n",
       " ('enterprise', 125),\n",
       " ('visualization', 125),\n",
       " ('Link', 125),\n",
       " ('access', 125),\n",
       " ('portfolio', 125),\n",
       " ('forecast', 125),\n",
       " ('person', 124),\n",
       " ('limited', 124),\n",
       " ('Tableau', 124),\n",
       " ('participate', 124),\n",
       " ('value', 123),\n",
       " ('Employee', 123),\n",
       " ('monitor', 123),\n",
       " ('agency', 122),\n",
       " ('fast', 122),\n",
       " ('seek', 122),\n",
       " ('Systems', 122),\n",
       " ('cost', 121),\n",
       " ('background', 121),\n",
       " ('closely', 119),\n",
       " ('Requirements', 119),\n",
       " ('Analytics', 118),\n",
       " ('action', 118),\n",
       " ('firm', 118),\n",
       " ('presentation', 117),\n",
       " ('expertise', 117),\n",
       " ('unit', 117),\n",
       " ('help', 116),\n",
       " ('marital', 115),\n",
       " ('Work', 114),\n",
       " ('genetic', 114),\n",
       " ('Science', 114),\n",
       " ('recommendation', 113),\n",
       " ('find', 112),\n",
       " ('reasonable', 112),\n",
       " ('investment', 112),\n",
       " ('regulatory', 112),\n",
       " ('matter', 111),\n",
       " ('collaborate', 111),\n",
       " ('encourage', 110),\n",
       " ('verbal', 110),\n",
       " ('finance', 110),\n",
       " ('certification', 109),\n",
       " ('good', 109),\n",
       " ('innovative', 109),\n",
       " ('basis', 109),\n",
       " ('code', 108),\n",
       " ('success', 108),\n",
       " ('consider', 108),\n",
       " ('long', 108),\n",
       " ('engineering', 108),\n",
       " ('building', 107),\n",
       " ('insurance', 107),\n",
       " ('document', 107),\n",
       " ('Computer', 107),\n",
       " ('network', 107),\n",
       " ('documentation', 106),\n",
       " ('task', 105),\n",
       " ('testing', 105),\n",
       " ('Capgemini', 105),\n",
       " ('comprehensive', 104),\n",
       " ('group', 104),\n",
       " ('Development', 104),\n",
       " ('manager', 104),\n",
       " ('current', 104),\n",
       " ('local', 103),\n",
       " ('factor', 103),\n",
       " ('collaboration', 103),\n",
       " ('approach', 103),\n",
       " ('effort', 103),\n",
       " ('Office', 103),\n",
       " ('contact', 102),\n",
       " ('Employer', 102),\n",
       " ('forecasting', 102),\n",
       " ('threat', 102),\n",
       " ('consideration', 101),\n",
       " ('expression', 101),\n",
       " ('Python', 101),\n",
       " ('line', 101),\n",
       " ('Service', 101),\n",
       " ('Department', 100),\n",
       " ('Required', 99),\n",
       " ('bring', 99),\n",
       " ('Product', 99),\n",
       " ('evaluate', 99),\n",
       " ('digital', 99),\n",
       " ('case', 99),\n",
       " ('core', 99),\n",
       " ('objective', 98),\n",
       " ('401k', 98),\n",
       " ('variety', 98),\n",
       " ('day', 97),\n",
       " ('Accounting', 97),\n",
       " ('Program', 96),\n",
       " ('great', 96),\n",
       " ('orient', 96),\n",
       " ('Minimum', 96),\n",
       " ('direct', 96),\n",
       " ('Degree', 96),\n",
       " ('cloud', 95),\n",
       " ('innovation', 95),\n",
       " ('essential', 95),\n",
       " ('engineer', 95),\n",
       " ('family', 95),\n",
       " ('workplace', 94),\n",
       " ('public', 94),\n",
       " ('regulation', 94),\n",
       " ('determine', 94),\n",
       " ('priority', 93),\n",
       " ('dental', 93),\n",
       " ('Human', 93),\n",
       " ('contract', 93),\n",
       " ('utilize', 92),\n",
       " ('inclusion', 91),\n",
       " ('scale', 91),\n",
       " ('quantitative', 91),\n",
       " ('establish', 91),\n",
       " ('operate', 91),\n",
       " ('budget', 91),\n",
       " ('Director', 91),\n",
       " ('delivery', 90),\n",
       " ('recognize', 90),\n",
       " ('potential', 90),\n",
       " ('technique', 90),\n",
       " ('characteristic', 89),\n",
       " ('additional', 89),\n",
       " ('Company', 89),\n",
       " ('email', 89),\n",
       " ('personal', 89),\n",
       " ('annual', 88),\n",
       " ('accurate', 88),\n",
       " ('present', 87),\n",
       " ('addition', 87),\n",
       " ('wide', 87),\n",
       " ('open', 87),\n",
       " ('post', 87),\n",
       " ('take', 86),\n",
       " ('engage', 86),\n",
       " ('similar', 86),\n",
       " ('Language', 86),\n",
       " ('commitment', 86),\n",
       " ('assessment', 86),\n",
       " ('Oracle', 86),\n",
       " ('energy', 85),\n",
       " ('Power', 85),\n",
       " ('military', 85),\n",
       " ('government', 85),\n",
       " ('execute', 85),\n",
       " ('directly', 84),\n",
       " ('outcome', 84),\n",
       " ('York', 84),\n",
       " ('Team', 84),\n",
       " ('Health', 84),\n",
       " ('vendor', 84),\n",
       " ('integration', 83),\n",
       " ('infrastructure', 83),\n",
       " ('Technology', 83),\n",
       " ('remote', 82),\n",
       " ('flexible', 82),\n",
       " ('contribute', 82),\n",
       " ('complete', 82),\n",
       " ('Develop', 82),\n",
       " ('advance', 81),\n",
       " ('query', 81),\n",
       " ('independently', 81),\n",
       " ('achieve', 81),\n",
       " ('efficiency', 81),\n",
       " ('Applicants', 81),\n",
       " ('track', 81),\n",
       " ('Administration', 81),\n",
       " ('balance', 80),\n",
       " ('revenue', 80),\n",
       " ('block', 80),\n",
       " ('set', 80),\n",
       " ('guide', 79),\n",
       " ('production', 79),\n",
       " ('consistent', 79),\n",
       " ('bonus', 79),\n",
       " ('place', 79),\n",
       " ('statistical', 78),\n",
       " ('pace', 78),\n",
       " ('Project', 78),\n",
       " ('multi', 78),\n",
       " ('healthcare', 78),\n",
       " ('enhance', 78),\n",
       " ('hand', 77),\n",
       " ('share', 77),\n",
       " ('Responsibilities', 77),\n",
       " ('demand', 77),\n",
       " ('structure', 77),\n",
       " ('execution', 77),\n",
       " ('prepare', 77),\n",
       " ('class', 76),\n",
       " ('physical', 76),\n",
       " ('UnitedHealth', 76),\n",
       " ('related', 76),\n",
       " ('disclose', 76),\n",
       " ('perspective', 76),\n",
       " ('law', 76),\n",
       " ('Programming', 76),\n",
       " ('expert', 75),\n",
       " ('Planning', 75),\n",
       " ('administration', 75),\n",
       " ('point', 75),\n",
       " ('inform', 75),\n",
       " ('Cloud', 75),\n",
       " ('Customer', 74),\n",
       " ('workforce', 74),\n",
       " ('desire', 74),\n",
       " ('executive', 74),\n",
       " ('healthy', 73),\n",
       " ('question', 73),\n",
       " ('Solutions', 73),\n",
       " ('response', 73),\n",
       " ('asset', 73),\n",
       " ('increase', 73),\n",
       " ('machine', 73),\n",
       " ('start', 72),\n",
       " ('methodology', 72),\n",
       " ('list', 72),\n",
       " ('integrity', 72),\n",
       " ('investigation', 72),\n",
       " ('timely', 72),\n",
       " ('Design', 71),\n",
       " ('expect', 71),\n",
       " ('clear', 71),\n",
       " ('order', 71),\n",
       " ('concept', 71),\n",
       " ('Government', 71),\n",
       " ('record', 71),\n",
       " ('automation', 71),\n",
       " ('fraud', 71),\n",
       " ('warehouse', 70),\n",
       " ('prove', 70),\n",
       " ('pipeline', 70),\n",
       " ('collaborative', 70),\n",
       " ('leverage', 70),\n",
       " ('Strong', 70),\n",
       " ('direction', 69),\n",
       " ('Lead', 69),\n",
       " ('home', 69),\n",
       " ('update', 69),\n",
       " ('target', 69),\n",
       " ('Working', 68),\n",
       " ('play', 68),\n",
       " ('contribution', 68),\n",
       " ('broad', 68),\n",
       " ('purpose', 68),\n",
       " ('Email', 68),\n",
       " ('continuous', 68),\n",
       " ('County', 68),\n",
       " ('mobility', 68),\n",
       " ('leave', 67),\n",
       " ('covid19', 67),\n",
       " ('modeling', 67),\n",
       " ('deadline', 67),\n",
       " ('fully', 67),\n",
       " ('credit', 67),\n",
       " ('understanding', 67),\n",
       " ('trust', 66),\n",
       " ('thinking', 66),\n",
       " ('deep', 66),\n",
       " ('Ability', 66),\n",
       " ('positive', 66),\n",
       " ('method', 66),\n",
       " ('interview', 66),\n",
       " ('visit', 66),\n",
       " ('Marketing', 66),\n",
       " ('week', 65),\n",
       " ('Education', 65),\n",
       " ('empower', 65),\n",
       " ('assess', 65),\n",
       " ('Enterprise', 65),\n",
       " ('manner', 65),\n",
       " ('description', 65),\n",
       " ('architecture', 65),\n",
       " ('total', 65),\n",
       " ('automate', 65),\n",
       " ('social', 65),\n",
       " ('power', 65),\n",
       " ('party', 64),\n",
       " ('Process', 64),\n",
       " ('collection', 64),\n",
       " ('Application', 63),\n",
       " ('align', 63),\n",
       " ('dynamic', 63),\n",
       " ('event', 63),\n",
       " ('promote', 62),\n",
       " ('begin', 62),\n",
       " ('actionable', 62),\n",
       " ('idea', 62),\n",
       " ('Reporting', 62),\n",
       " ('center', 62),\n",
       " ('recruitment', 62),\n",
       " ('Software', 62),\n",
       " ('partnership', 62),\n",
       " ('view', 62),\n",
       " ('Insurance', 62),\n",
       " ('incentive', 61),\n",
       " ('advisor', 61),\n",
       " ('schedule', 61),\n",
       " ('accounting', 61),\n",
       " ('accept', 61),\n",
       " ('PeopleSoft', 61),\n",
       " ('component', 60),\n",
       " ('assistance', 60),\n",
       " ('Excellent', 60),\n",
       " ('oral', 60),\n",
       " ('sdl2017', 60),\n",
       " ('proficiency', 60),\n",
       " ('submit', 60),\n",
       " ('Master', 60),\n",
       " ('unique', 60),\n",
       " ('corporate', 60),\n",
       " ('facilitate', 59),\n",
       " ('Washington', 59),\n",
       " ('Agile', 59),\n",
       " ('site', 59),\n",
       " ('associate', 59),\n",
       " ('interpersonal', 59),\n",
       " ('emerge', 59),\n",
       " ('hour', 59),\n",
       " ('developer', 58),\n",
       " ('generation', 58),\n",
       " ('Engineer', 58),\n",
       " ('finding', 58),\n",
       " ('ongoing', 58),\n",
       " ('integrate', 58),\n",
       " ('engagement', 58),\n",
       " ('Strategic', 58),\n",
       " ('resume', 58),\n",
       " ('FINRA', 58),\n",
       " ('million', 57),\n",
       " ('flexibility', 57),\n",
       " ('Policy', 57),\n",
       " ('Communication', 57),\n",
       " ('Federal', 57),\n",
       " ('Berkeley', 57),\n",
       " ('ideal', 57),\n",
       " ('secure', 57),\n",
       " ('coordinate', 57),\n",
       " ('monthly', 57),\n",
       " ('workflow', 57),\n",
       " ('meeting', 57),\n",
       " ('Analytical', 57),\n",
       " ('loss', 57),\n",
       " ('hybrid', 56),\n",
       " ('organize', 56),\n",
       " ('Employment', 56),\n",
       " ('foster', 56),\n",
       " ('Server', 56),\n",
       " ('optimize', 56),\n",
       " ('general', 56),\n",
       " ('influence', 56),\n",
       " ('Sales', 56),\n",
       " ('gather', 55),\n",
       " ('drug', 55),\n",
       " ('holiday', 55),\n",
       " ('difference', 55),\n",
       " ('Type', 55),\n",
       " ('resolve', 55),\n",
       " ('cyber', 55),\n",
       " ('transaction', 55),\n",
       " ('agile', 54),\n",
       " ('feedback', 54),\n",
       " ('involve', 54),\n",
       " ('actual', 54),\n",
       " ('validate', 54),\n",
       " ('prioritize', 54),\n",
       " ('online', 54),\n",
       " ('scope', 54),\n",
       " ('incident', 54),\n",
       " ('framework', 54),\n",
       " ('FPA', 54),\n",
       " ('Automation', 54),\n",
       " ('feel', 53),\n",
       " ('consumer', 53),\n",
       " ('efficient', 53),\n",
       " ('form', 53),\n",
       " ('principle', 53),\n",
       " ('Learning', 53),\n",
       " ('connect', 52),\n",
       " ('important', 52),\n",
       " ('category', 52),\n",
       " ('attention', 52),\n",
       " ('interest', 52),\n",
       " ('mental', 52),\n",
       " ('transformation', 52),\n",
       " ('independent', 52),\n",
       " ('oversee', 52),\n",
       " ('continue', 52),\n",
       " ('handle', 52),\n",
       " ('think', 52),\n",
       " ('Plan', 52),\n",
       " ('mitigation', 52),\n",
       " ('Fidelity', 52),\n",
       " ('train', 51),\n",
       " ('United', 51),\n",
       " ('depend', 51),\n",
       " ('face', 51),\n",
       " ('date', 51),\n",
       " ('produce', 51),\n",
       " ('audience', 51),\n",
       " ('scientist', 51),\n",
       " ('HUMINT', 51),\n",
       " ('clinical', 51),\n",
       " ('number', 50),\n",
       " ('Preferred', 50),\n",
       " ('reflect', 50),\n",
       " ('working', 50),\n",
       " ('States', 50),\n",
       " ('Quality', 50),\n",
       " ('consult', 50),\n",
       " ('accordance', 50),\n",
       " ('creative', 50),\n",
       " ('capacity', 50),\n",
       " ('license', 50),\n",
       " ('enhancement', 50),\n",
       " ('VyStar', 50),\n",
       " ('talent', 49),\n",
       " ('Time', 49),\n",
       " ('match', 49),\n",
       " ('legal', 49),\n",
       " ('Remote', 49),\n",
       " ('Life', 49),\n",
       " ('strive', 49),\n",
       " ('domain', 49),\n",
       " ('electric', 49),\n",
       " ('specification', 48),\n",
       " ('Action', 48),\n",
       " ('free', 48),\n",
       " ('ancestry', 48),\n",
       " ('passionate', 48),\n",
       " ('accuracy', 48),\n",
       " ('obtain', 48),\n",
       " ('Azure', 48),\n",
       " ('deploy', 48),\n",
       " ('translate', 48),\n",
       " ('selection', 48),\n",
       " ('check', 48),\n",
       " ('org', 48),\n",
       " ('regional', 48),\n",
       " ('interact', 48),\n",
       " ('guideline', 48),\n",
       " ('pge', 48),\n",
       " ('remotely', 47),\n",
       " ('measure', 47),\n",
       " ('qualify', 47),\n",
       " ('PowerPoint', 47),\n",
       " ('close', 47),\n",
       " ('robust', 47),\n",
       " ('active', 47),\n",
       " ('quickly', 47),\n",
       " ('Resources', 47),\n",
       " ('programming', 47),\n",
       " ('generate', 47),\n",
       " ('actively', 47),\n",
       " ('patient', 47),\n",
       " ('connection', 46),\n",
       " ('Affirmative', 46),\n",
       " ('travel', 46),\n",
       " ('discriminate', 46),\n",
       " ('proud', 46),\n",
       " ('consultant', 46),\n",
       " ('proactive', 46),\n",
       " ('type', 46),\n",
       " ('brand', 46),\n",
       " ('month', 46),\n",
       " ('link', 46),\n",
       " ('Research', 46),\n",
       " ('respect', 46),\n",
       " ('University', 46),\n",
       " ('real', 46),\n",
       " ('adjustment', 46),\n",
       " ('colleague', 45),\n",
       " ('option', 45),\n",
       " ('vary', 45),\n",
       " ('note', 45),\n",
       " ('Snowflake', 45),\n",
       " ('detailed', 45),\n",
       " ('coordination', 45),\n",
       " ('export', 45),\n",
       " ('stay', 45),\n",
       " ('pregnancy', 45),\n",
       " ('final', 45),\n",
       " ('Architecture', 45),\n",
       " ('follow', 45),\n",
       " ('Credit', 45),\n",
       " ('System', 45),\n",
       " ('authorization', 45),\n",
       " ('stock', 44),\n",
       " ('mean', 44),\n",
       " ('rule', 44),\n",
       " ('Proficiency', 44),\n",
       " ('Word', 44),\n",
       " ('Partner', 44),\n",
       " ('Relationship', 44),\n",
       " ('human', 44),\n",
       " ('discipline', 44),\n",
       " ('Public', 44),\n",
       " ('vaccine', 44),\n",
       " ('country', 44),\n",
       " ('coverage', 44),\n",
       " ('excellence', 44),\n",
       " ('successfully', 44),\n",
       " ('Java', 44),\n",
       " ('Specialist', 44),\n",
       " ('Colorado', 43),\n",
       " ('equitable', 43),\n",
       " ('Diversity', 43),\n",
       " ('modify', 43),\n",
       " ('meaningful', 43),\n",
       " ('governance', 43),\n",
       " ('Conduct', 43),\n",
       " ('possess', 43),\n",
       " ('exceptional', 43),\n",
       " ('cycle', 43),\n",
       " ('Build', 43),\n",
       " ('Range', 43),\n",
       " ('Compliance', 43),\n",
       " ('Cyber', 43),\n",
       " ('short', 43),\n",
       " ('supply', 43),\n",
       " ('sense', 43),\n",
       " ('Lincoln', 43),\n",
       " ('reward', 42),\n",
       " ('passion', 42),\n",
       " ('Benefits', 42),\n",
       " ('contractor', 42),\n",
       " ('commission', 42),\n",
       " ('alignment', 42),\n",
       " ('proficient', 42),\n",
       " ('limit', 42),\n",
       " ('material', 42),\n",
       " ('Division', 42),\n",
       " ('administrative', 42),\n",
       " ('commercial', 42),\n",
       " ('lifecycle', 42),\n",
       " ('Control', 42),\n",
       " ('Technical', 42),\n",
       " ('feature', 42),\n",
       " ('campus', 42),\n",
       " ('Center', 42),\n",
       " ('Deputy', 42),\n",
       " ('Florida', 42),\n",
       " ('aspect', 41),\n",
       " ('reach', 41),\n",
       " ('adhere', 41),\n",
       " ('maintenance', 41),\n",
       " ('acquisition', 41),\n",
       " ('extensive', 41),\n",
       " ('motivate', 41),\n",
       " ('Area', 41),\n",
       " ('Familiarity', 41),\n",
       " ('Forecasting', 41),\n",
       " ('Level', 41),\n",
       " ('capital', 41),\n",
       " ('collect', 41),\n",
       " ('guidance', 41),\n",
       " ('depth', 41),\n",
       " ('Salesforce', 41),\n",
       " ('architect', 41),\n",
       " ('mentor', 41),\n",
       " ('language', 40),\n",
       " ('transform', 40),\n",
       " ('provider', 40),\n",
       " ('Detail', 40),\n",
       " ('sound', 40),\n",
       " ('basic', 40),\n",
       " ('billion', 40),\n",
       " ('thrive', 40),\n",
       " ('student', 40),\n",
       " ('interpret', 40),\n",
       " ('Basic', 40),\n",
       " ('monitoring', 40),\n",
       " ('Port', 40),\n",
       " ('run', 39),\n",
       " ('low', 39),\n",
       " ('offering', 39),\n",
       " ('labor', 39),\n",
       " ('political', 39),\n",
       " ('vaccination', 39),\n",
       " ('statement', 39),\n",
       " ('Google', 39),\n",
       " ('motivated', 39),\n",
       " ('deliverable', 39),\n",
       " ('combination', 39),\n",
       " ('statistic', 39),\n",
       " ('charge', 39),\n",
       " ('extend', 39),\n",
       " ('solid', 39),\n",
       " ('input', 39),\n",
       " ('Travel', 39),\n",
       " ('Risk', 39),\n",
       " ('Best', 39),\n",
       " ('force', 39),\n",
       " ('interested', 38),\n",
       " ('sector', 38),\n",
       " ('stack', 38),\n",
       " ('regular', 38),\n",
       " ('America', 38),\n",
       " ('resolution', 38),\n",
       " ('comfortable', 38),\n",
       " ('Vision', 38),\n",
       " ('Economics', 38),\n",
       " ('discretion', 38),\n",
       " ('file', 38),\n",
       " ('award', 38),\n",
       " ('Professional', 38),\n",
       " ('optimization', 38),\n",
       " ('Attention', 38),\n",
       " ('Bank', 38),\n",
       " ('entire', 37),\n",
       " ('Salary', 37),\n",
       " ('primary', 37),\n",
       " ('Manage', 37),\n",
       " ('Medical', 37),\n",
       " ('represent', 37),\n",
       " ('Position', 37),\n",
       " ('college', 37),\n",
       " ('embrace', 37),\n",
       " ('love', 37),\n",
       " ('ecosystem', 37),\n",
       " ('banking', 37),\n",
       " ('mitigate', 37),\n",
       " ('store', 37),\n",
       " ('discrimination', 37),\n",
       " ('vacation', 37),\n",
       " ('expectation', 37),\n",
       " ('learning', 37),\n",
       " ('budgeting', 37),\n",
       " ('Delivery', 37),\n",
       " ('peer', 36),\n",
       " ('mindset', 36),\n",
       " ('vaccinated', 36),\n",
       " ('exceed', 36),\n",
       " ('owner', 36),\n",
       " ('evolve', 36),\n",
       " ('remain', 36),\n",
       " ('classification', 36),\n",
       " ('locate', 36),\n",
       " ('special', 36),\n",
       " ('economic', 36),\n",
       " ('creation', 36),\n",
       " ('nice', 36),\n",
       " ('debt', 36),\n",
       " ('Platform', 36),\n",
       " ('Candidates', 35),\n",
       " ('history', 35),\n",
       " ('consulting', 35),\n",
       " ('Dental', 35),\n",
       " ('comply', 35),\n",
       " ('university', 35),\n",
       " ('channel', 35),\n",
       " ('interface', 35),\n",
       " ('proactively', 35),\n",
       " ('edge', 35),\n",
       " ('Location', 35),\n",
       " ('nation', 35),\n",
       " ('Advanced', 35),\n",
       " ('choice', 34),\n",
       " ('income', 34),\n",
       " ('scalable', 34),\n",
       " ('geographic', 34),\n",
       " ('Assurance', 34),\n",
       " ('effectiveness', 34),\n",
       " ('transparency', 34),\n",
       " ('Artificial', 34),\n",
       " ('agreement', 34),\n",
       " ('Chief', 34),\n",
       " ('Strategy', 34),\n",
       " ('institution', 34),\n",
       " ('Asset', 34),\n",
       " ('completion', 34),\n",
       " ('volunteer', 34),\n",
       " ('click', 34),\n",
       " ('processing', 34),\n",
       " ('journey', 34),\n",
       " ('Client', 34),\n",
       " ('splunk', 34),\n",
       " ('Visual', 34),\n",
       " ('maximize', 34),\n",
       " ('quarter', 33),\n",
       " ('tech', 33),\n",
       " ('citizenship', 33),\n",
       " ('Equity', 33),\n",
       " ('North', 33),\n",
       " ('Statistics', 33),\n",
       " ('starter', 33),\n",
       " ('Union', 33),\n",
       " ('invest', 33),\n",
       " ('proposal', 33),\n",
       " ('Perform', 33),\n",
       " ('Fair', 33),\n",
       " ('space', 33),\n",
       " ('past', 33),\n",
       " ('natural', 33),\n",
       " ('escalate', 33),\n",
       " ('Privacy', 33),\n",
       " ('Executive', 33),\n",
       " ('retirement', 33),\n",
       " ('pricing', 33),\n",
       " ('Vice', 33),\n",
       " ('today', 32),\n",
       " ('Base', 32),\n",
       " ('gain', 32),\n",
       " ('curious', 32),\n",
       " ('criminal', 32),\n",
       " ('estimate', 32),\n",
       " ('Analyze', 32),\n",
       " ('troubleshoot', 32),\n",
       " ('Access', 32),\n",
       " ('daily', 32),\n",
       " ('conviction', 32),\n",
       " ('forefront', 32),\n",
       " ('Veterans', 32),\n",
       " ('relation', 32),\n",
       " ('cover', 32),\n",
       " ('volume', 32),\n",
       " ('ownership', 32),\n",
       " ('Capital', 32),\n",
       " ('progress', 32),\n",
       " ('loan', 32),\n",
       " ('Fraud', 32),\n",
       " ...]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = df['任职要求'].str.split().explode().tolist()\n",
    "count = Counter(data).most_common()\n",
    "count"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
